local packer = require('packer')

return packer.startup(function(use)
    -- Packer can manage itself
    use 'wbthomason/packer.nvim'

    -- General
    use 'tpope/vim-sensible' -- General config stuff that I don't feel like adding
    use 'kovisoft/paredit' -- Better parans and brackets, recommended for lisp
	use 'jiangmiao/auto-pairs' -- Auto close brackets and parens
	use 'alvan/vim-closetag' -- Auto close html tags
    use 'tpope/vim-endwise' -- Auto closing for non c-style languages

    -- Tools
	use 'chrisbra/Colorizer' -- Colorize text that references a color
	use 'preservim/nerdtree' -- File browser in Neovim
	use 'mbbill/undotree' -- List file history
    use 'tpope/vim-fugitive' -- A graphical Git wrapper for Vim
    use 'junegunn/fzf' -- Integrates various programs(RipGrep(Rg), The Silver Searcher(Ag), FZF, Bat, Delta) into Vim
    use 'junegunn/fzf.vim' -- Why are both required? ^^^
    use 'vim-pandoc/vim-pandoc' -- Pandoc integration

    -- Theming 
    use 'ryanoasis/vim-devicons' -- Adds support for file icons in other plugins
    use 'dylanaraps/wal.vim' -- Configure colorscheme with PyWal
   
    -- IDE plugins
	use 'w0rp/ale' -- Code formaters and linters
	use 'neovim/nvim-lspconfig' -- Neovim native LSP integration
    use {'nvim-treesitter/nvim-treesitter', run = ':TSUpdate'} -- Better syntax highlighting
    use 'hrsh7th/nvim-cmp' -- Nvim-cmp base
    use 'hrsh7th/cmp-path'  -- Nvim-cmp path completion
    use 'hrsh7th/cmp-buffer' -- Nvim-cmp buffer completion
    use 'hrsh7th/cmp-nvim-lsp'  -- Nvim-cmp neovim lsp completion

    -- Addtional language support
    use {'nvim-orgmode/orgmode', config = function() -- Org support
            require('orgmode').setup{}
        end
    }
    use 'sheerun/vim-polyglot' -- Neovim language pack for a bunch of languages
    use 'mfussenegger/nvim-jdtls' -- Better Java support
    use 'cheap-glitch/vim-v'
    use 'ziglang/zig.vim'
end)

--[[
    use {'vlime/vlime', rtp = 'vim/'} -- Turns Vim into a Common Lisp IDE
	-- use 'Shougo/deoplete.nvim' -- ABC completion
    use 'mfussenegger/nvim-dap'
    use 'tpope/vim-rails'
    use 'vim-airline/vim-airline'
    use 'vim-airline/vim-airline-themes'
    -- use 'nvim-lua/completion-nvim'
    use 'Xuyuanp/nerdtree-git-plugin'
    use 'vim-syntastic/syntastic' 
    use 'PhilRunninger/nerdtree-visual-selection'
    use 'airblade/vim-gitgutter'
    use {
        'lewis6991/gitsigns.nvim',
        requires = {
            'nvim-lua/plenary.nvim'
        },
        tag = 'release' -- To use the latest release
    }
    use 'romgrk/barbar.nvim'
]]
